/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;

import Utilidades.VariaveisEstaticas;
import dominio.Cheque;
import dominio.Compra;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import negocio.ManterChequeNegocio;

/**
 *
 * @author Huliane
 */
@ManagedBean
@SessionScoped
public class ManterChequeBean {
    private ManterChequeNegocio manterChequeNegocio = new ManterChequeNegocio();
    private Cheque cheque;
    private int numCheque;
    private String conta;
    private int agencia;
    private String banco;
    private Date dataVen;
    private double valor;
    private Compra compra;

    public Compra getCompra() {
        return compra;
    }

    public void setCompra(Compra compra) {
        this.compra = compra;
    }


    
    public Cheque getCheque() {
        return cheque;
    }

    public void setCheque(Cheque cheque) {
        this.cheque = cheque;
    }

    public int getAgencia() {
        return agencia; 
    }

    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

    public String getBanco() {
        return banco;
    }

    public void setBanco(String banco) {
        this.banco = banco;
    }

    public String getConta() {
        return conta;
    }

    public void setConta(String conta) {
        this.conta = conta;
    }

    public Date getDataVen() {
        return dataVen;
    }

    public void setDataVen(Date dataVen) {
        this.dataVen = dataVen;
    }

    public ManterChequeNegocio getManterChequeNegocio() {
        return manterChequeNegocio;
    }

    public void setManterChequeNegocio(ManterChequeNegocio manterChequeNegocio) {
        this.manterChequeNegocio = manterChequeNegocio;
    }

    public int getNumCheque() {
        return numCheque;
    }

    public void setNumCheque(int numCheque) {
        this.numCheque = numCheque;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

private boolean exibeTabela;
    /** Estrutura de dados usada para armazenar os clientes contidos no banco de dados<br>
     * Será usada para exibir a lista dos clientes na tela.
     */
    private List<Cheque> cheques;
    /** Variável que irá receber o valor false quando o usuário selecionar algum cliente.*/
    private boolean naoSelecionouCliente = true;

    public ManterChequeBean() {
        inicializarAtributos();
    }

    /**
     * Método que inicializa todos os atributos do ManterClienteBean
     */
    private void inicializarAtributos(){
        manterChequeNegocio = new ManterChequeNegocio();
        cheque = new Cheque();
        cheques = new ArrayList<Cheque>();
        numCheque = 0;
        agencia = 0;
        conta= "";
        banco= "";
        valor = 0.0;


        exibeTabela = false;
    }

    /**
     * Método que irá chamar o método create() da classe ManterClienteNegócio.
     *
     */
    public void create() {
        /** Variável usada para receber o retorno do método create() da classe manterClienteNegócio.<br>
         * Esse retorno é usado para saber se o cliente foi armazenado ou não, distinguindo assim os possíveis erros.
         */

        int res = manterChequeNegocio.create(cheque);
        /** switch usado para mostrar a mensagem de inserção ao usário de acordo com o valor da
         * variável res.
         */
        exibeTabela = false;
        switch (res) {
            case VariaveisEstaticas.SUCESSO:
             //   ExibirMensagens.exibirMensagens(VariaveisEstaticas.INFORMATIVA, "SUCESSO", new Integer[]{new Integer(7), new Integer(0)});
                inicializarAtributos();

                break;
            case VariaveisEstaticas.ERRO_DUPLICACAO:
          //      ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(8), new Integer(6), new Integer(0)});
                break;
            case VariaveisEstaticas.ERRO_BD:
         //       ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(1), new Integer(1), new Integer(1)});
                break;
        }
    }

    /**
     * Método que irá chamar o edit da classe manterClienteNegocio. É usado para editar um cliente.
     *
     */
    public void edit() {


        int res = manterChequeNegocio.edit(cheque);
        exibeTabela = false;
        switch (res) {
            case VariaveisEstaticas.SUCESSO:
             //   ExibirMensagens.exibirMensagens(VariaveisEstaticas.INFORMATIVA, "SUCESSO", new Integer[]{new Integer(7), new Integer(1)});

                naoSelecionouCliente = true;   // Caso ele consiga excluir o cliente, então essa variável irá receber true para desabilitar o botão.

                inicializarAtributos();
                break;

            case VariaveisEstaticas.ERRO_DUPLICACAO:
         //       ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(8), new Integer(5), new Integer(0)});
                break;
            case VariaveisEstaticas.ERRO_BD:
      //          ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(1), new Integer(1), new Integer(1)});
                break;
        }
    }

    /**
     * Método que irá chamar o destroy() da classe manterClienteNegocio, será chamado para excluir um cliente.
     *
     */
    public void destroy() {
        int res = manterChequeNegocio.destroy(cheque);
        exibeTabela = false;
        switch (res) {
            case VariaveisEstaticas.SUCESSO:
         //       ExibirMensagens.exibirMensagens(VariaveisEstaticas.INFORMATIVA, "SUCESSO", new Integer[]{new Integer(7), new Integer(2)});

                naoSelecionouCliente = true;   // Caso ele consiga excluir o cliente, então essa variável irá receber true para desabilitar o botão.
                inicializarAtributos();
                //cliente = new Clientes();    // Zera todos os atributos do cliente para que os campos na página fiquem vazios.
                break;
            case VariaveisEstaticas.ERRO_BD:
         //       ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(1), new Integer(1), new Integer(1)});
                break;
        }
    }

    /** Método que tem a função de buscar todos os clientes no BD e armazena-los na estrutura clientes*/
    public void findClienteEntities() {
        exibeTabela = true;
        cheques = manterChequeNegocio.findChequeEntities();

    }

    public List<Cheque> getCheques() {
        return cheques;
    }

    public void setCheques(List<Cheque> cheques) {
        this.cheques = cheques;
    }

   
    public boolean isExibeTabela() {
        return exibeTabela;
    }

    public void setExibeTabela(boolean exibeTabela) {
        this.exibeTabela = exibeTabela;
    }

    public boolean isNaoSelecionouCliente() {
        return naoSelecionouCliente;
    }

    public void setNaoSelecionouCliente(boolean naoSelecionouCliente) {
        this.naoSelecionouCliente = naoSelecionouCliente;
    }
}
